'use strict';

exports.main = async (event, context) => {
  const db = uniCloud.database();
  const {
    taskId,
    status,
    is_visible, // 可见性更新
    messageId = null // 如果是更新交易卡片状态
  } = event;

  if (!taskId || (!status && is_visible === undefined)) {
    return {
      code: 400,
      msg: '缺少必要参数',
      data: null
    };
  }

  try {
    const collection = db.collection('taskList');
    
    // 更新任务状态
    const updateData = {
      update_time: new Date()
    };
    
    // 如果有状态更新
    if (status) {
      updateData.status = status;
      updateData.latest_update = new Date().toISOString();
    }
    
    // 如果有可见性更新
    if (is_visible !== undefined) {
      updateData.is_visible = is_visible;
    }

    // 如果状态变为processing，记录开始时间
    if (status === 'processing') {
      updateData.start_time = new Date().toISOString();
    }

    // 如果状态变为completed，记录完成时间
    if (status === 'completed') {
      updateData.complete_time = new Date().toISOString();
    }

    const result = await collection.doc(taskId).update(updateData);

    // 如果同时需要更新消息状态
    if (messageId) {
      const messageCollection = db.collection('chatMessages');
      await messageCollection.doc(messageId).update({
        status: 'confirmed'
      });
    }

    return {
      code: 200,
      msg: status ? '任务状态更新成功' : '任务可见性更新成功',
      data: {
        taskId: taskId,
        status: status,
        is_visible: is_visible
      }
    };
  } catch (error) {
    console.error('更新任务状态失败:', error);
    return {
      code: 500,
      msg: '更新任务状态失败',
      data: null
    };
  }
}; 